/**
 * @file ImageType.hpp
 * @brief 定义图片的信息
 */

#ifndef IMAGE_TYPE_H
#define IMAGE_TYPE_H

#include <string>

/**
 * @class ImageType
 * @brief 图片信息，用于在`Client`中交换图片
 * @note
 * **对于开发者**
 * `Client`并不关心具体的数据格式，框架只是做转发，具体的实现由驱动程序和文件格式解决
 */
struct ImageType
{
  /**
   * @brief 帧号
   * @warning 有可能为负数，比如高速相机的预览图片帧号为-1
   */
  long frameID;
  /**
   * @brief 图片数据大小(字节)
   */
  long size;
  /**
   * @brief 图片数据指针
   * @warning 建议创建者维护指针生命周期，除非另有说明
   */
  unsigned char * data;
  /**
   * @brief 附加信息
   * @note 仅要求JSON格式，具体实现细节由驱动程序定义
   * `Client`框架不会处理该字段，只会转发给`FileFormat`
   */
  std::string additional;
};

#endif
